//
//  main.m
//  04-HomeWork
//
//  Created by dllo on 16/7/7.
//  Copyright © 2016年 daming. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Color.h"
int main(int argc, const char * argv[]) {
//  处理⽂件crayons.txt中的⽂本信息，⽂本内容是关于颜⾊的，每⾏都是⼀个颜⾊的信息，例如：Almond #EED9C4，前⼀个字符串是颜⾊的名称，后⼀ 个字符串是颜⾊的16进制⾊值，处理⽂本完成如下需求:
   
//   使⽤字典管理所有的颜⾊，即字典中存储的是多个键值对，颜⾊名称为 key，16进制颜⾊值（不带#）是value。
//  使⽤⼀个新的字典管理颜⾊，对颜⾊进⾏分类管理，即：“A”，“B”，“C”… 即这个字典包含多个键值对，key是26个字⺟，value是数组，数组⾥存放的是 Color对象（包含name和colorValue）。需要⾃⼰创建Color类。
    
//  获取文件中字符串的方法如下:
    
    NSString *sourceStr = [NSString stringWithContentsOfFile:@"/Users/dllo/DLS160710/Objective-C/HomeWork/04-HomeWork/04-HomeWork/crayons.txt" encoding:NSUTF8StringEncoding error:nil];
    // 通过 /n 分解字符串
    NSArray *array = [sourceStr componentsSeparatedByString:@"\n"];
    NSMutableDictionary *dicOfColor = [NSMutableDictionary dictionary];
    NSMutableArray *arrOfColor = [NSMutableArray array];
    // 遍历数组, 取出每个color字符串
    for (NSString *str in array) {
        NSArray *arrOfAllColor = [str componentsSeparatedByString:@" #"];
        [dicOfColor setObject:arrOfAllColor.lastObject forKey:arrOfAllColor.firstObject];
        // 创建color对象
        Color *color = [[Color alloc]initWithColorName:arrOfAllColor.firstObject colorValue:arrOfAllColor.lastObject];
        // 将color对象添加到数组中
        [arrOfColor addObject:color];
    }
    NSMutableDictionary *newDicOfColor = [NSMutableDictionary dictionary];
    // 遍历数组, 通过首字母为key循环添加数组到字典中
    for (Color *color in arrOfColor) {
        if (color.colorName.length > 0) {
            unichar captial = [color.colorName characterAtIndex:0];
            NSString *key = [NSString stringWithFormat:@"%c", captial];
            NSMutableArray *arrColor = [newDicOfColor objectForKey: key];
            // 判断, 从新字典中取出的数组是否为空
            // 为空说明, 还没有存过对应首字母的数组
            if (arrColor == nil) {
            arrColor = [NSMutableArray array];
            [arrColor addObject:color];
            [newDicOfColor setObject:arrColor forKey:key];
            } else {
            [arrColor addObject:color];
            }
        }
    }
    NSLog(@"%@", [newDicOfColor description]);
 
    return 0;
}
